using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("Localization")]
	public class Localization : MonoClass
	{
		public static Locale DEFAULT_LOCALE => MonoClass.smethod_6<Locale>(TritonHs.MainAssemblyPath, "", "Localization", "DEFAULT_LOCALE");

		public static string DEFAULT_LOCALE_NAME => MonoClass.smethod_8(TritonHs.MainAssemblyPath, "", "Localization", "DEFAULT_LOCALE_NAME");

		public Locale m_locale => method_2<Locale>("m_locale");

		public List<Locale> m_foreignLocales => method_3<Class270<Locale>>("m_foreignLocales")?.method_25();

		public List<string> m_foreignLocaleNames => method_3<Class272>("m_foreignLocaleNames")?.method_25();

		public Localization(IntPtr address, string className)
			: base(address, className)
		{
		}

		public Localization(IntPtr address)
			: this(address, "Localization")
		{
		}

		public static void Initialize()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "Localization", "Initialize");
		}

		public static Locale GetLocale()
		{
			return MonoClass.smethod_14<Locale>(TritonHs.MainAssemblyPath, "", "Localization", "GetLocale", Array.Empty<object>());
		}

		public static bool DoesLocaleNeedExtraReadingTime(Locale locale)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "Localization", "DoesLocaleNeedExtraReadingTime", new object[1] { locale });
		}

		public static void SetLocale(Locale locale)
		{
			MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "Localization", "SetLocale", locale);
		}

		public static bool IsIMELocale()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "Localization", "IsIMELocale", Array.Empty<object>());
		}

		public static string GetLocaleName()
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "Localization", "GetLocaleName");
		}

		public static string GetBnetLocaleName()
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "Localization", "GetBnetLocaleName");
		}

		public static bool SetLocaleName(string localeName)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "Localization", "SetLocaleName", new object[1] { localeName });
		}

		public static List<Locale> GetLoadOrder(Locale locale, AssetFamily family)
		{
			return MonoClass.smethod_16<Class250<Locale>>(TritonHs.MainAssemblyPath, "", "Localization", "GetLoadOrder", new Class276.Enum20[2]
			{
				Class276.Enum20.ValueType,
				Class276.Enum20.ValueType
			}, new object[2] { locale, family })?.method_25();
		}

		public static List<Locale> GetLoadOrder(Locale locale, bool isCardTexture)
		{
			return MonoClass.smethod_16<Class250<Locale>>(TritonHs.MainAssemblyPath, "", "Localization", "GetLoadOrder", new Class276.Enum20[2]
			{
				Class276.Enum20.ValueType,
				Class276.Enum20.Boolean
			}, new object[2] { locale, isCardTexture })?.method_25();
		}

		public static List<Locale> GetLoadOrder(bool isCardTexture)
		{
			return MonoClass.smethod_16<Class250<Locale>>(TritonHs.MainAssemblyPath, "", "Localization", "GetLoadOrder", new Class276.Enum20[1] { Class276.Enum20.Boolean }, new object[1] { isCardTexture })?.method_25();
		}

		public static bool IsValidLocaleName(string localeName)
		{
			return MonoClass.smethod_11<bool>(TritonHs.MainAssemblyPath, "", "Localization", "IsValidLocaleName", new Class276.Enum20[1] { Class276.Enum20.String }, new object[1] { localeName });
		}

		public static bool IsForeignLocale(Locale locale)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "Localization", "IsForeignLocale", new object[1] { locale });
		}

		public static bool IsForeignLocaleName(string localeName)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "Localization", "IsForeignLocaleName", new object[1] { localeName });
		}

		public static List<Locale> GetForeignLocales()
		{
			return MonoClass.smethod_15<Class270<Locale>>(TritonHs.MainAssemblyPath, "", "Localization", "GetForeignLocales", Array.Empty<object>())?.method_25();
		}

		public static List<string> GetForeignLocaleNames()
		{
			return MonoClass.smethod_15<Class272>(TritonHs.MainAssemblyPath, "", "Localization", "GetForeignLocaleNames", Array.Empty<object>())?.method_25();
		}

		public static string ConvertLocaleToDotNet(Locale locale)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "Localization", "ConvertLocaleToDotNet", new Class276.Enum20[1] { Class276.Enum20.ValueType }, locale);
		}

		public static string ConvertLocaleToDotNet(string localeName)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "Localization", "ConvertLocaleToDotNet", new Class276.Enum20[1] { Class276.Enum20.String }, localeName);
		}

		public static bool DoesLocaleUseDecimalPoint(Locale locale)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "Localization", "DoesLocaleUseDecimalPoint", new object[1] { locale });
		}

		public void SetPegLocale(Locale locale)
		{
			method_8("SetPegLocale", locale);
		}

		public void SetPegLocaleName(string localeName)
		{
			method_8("SetPegLocaleName", localeName);
		}
	}
}
